"""
rdd.sortBy(func, ascending=False, numPartitions=1)
功能：对RDD数据进行排序，基于指定的排序依据
参数说明：
    1.func：(T)->U:指定按照rdd中的那列数据进行排序，比如 lambda x:x[1] 表示按照第二列的元素进行排序
    2.ascending：True为升序，False为降序
    3.numPartitions：用多少分区进行排序
"""

from my_utils import spark_util

sc = spark_util.get_spark_context()

# flatMap:拿到单词 -> map:得到二元元组 -> reduceByKey:统计单词个数 -> sortBy:根据单词个数进行排序
file_path = "/Users/dongjian/Documents/学习/python-learn-资料/资料/第15章资料/资料/hello.txt"
result_rdd = sc.textFile(file_path).flatMap(lambda x: x.split(" ")).map(lambda word: (word, 1)) \
    .reduceByKey(lambda a, b: a + b).sortBy(lambda x: x[1], ascending=False, numPartitions=1)

# 打印结果
print(result_rdd.collect())

# 关闭spark
sc.stop()
